Automatic Verification of Integer Array Programs
نویسندگان
چکیده
We provide a verification technique for a class of programs working on integer arrays of finite, but not a priori bounded length. We use the logic of integer arrays SIL [13] to specify preand post-conditions of programs and their parts. Effects of non-looping parts of code are computed syntactically on the level of SIL. Loop pre-conditions derived during the computation in SIL are converted into counter automata (CA). Loops are automatically translated— purely on the syntactical level—to transducers. Pre-condition CA and transducers are composed, and the composition over-approximated by flat automata with difference bound constraints, which are next converted back into SIL formulae, thus inferring post-conditions of the loops. Finally, validity of post-conditions specified by the user in SIL may be checked as entailment is decidable for SIL.
منابع مشابه
A Rule-based Verification Strategy for Array Manipulating Programs
We present a method for verifying properties of imperative programs that manipulate integer arrays. Imperative programs and their properties are represented by using Constraint Logic Programs (CLP) over integer arrays. Our method is refutational. Given a Hoare triple {φ} prog {ψ} that defines a partial correctness property of an imperative program prog, we encode the negation of the property as...
متن کاملStatus Report on Software Verification
This report describes the 3rd International Competition on Software Verification (SV-COMP 2014), which is the third edition of a thorough comparative evaluation of fully automatic software verifiers. The reported results represent the state of the art in automatic software verification, in terms of effectiveness and efficiency. The verification tasks of the competition consist of nine categorie...
متن کاملArray Data--ow Analysis for Imperative Recursive Programs
Data-ow analysis is extremely important to detect parallelism. Therefore, the current lack of suitable analysis makes recursion in the control ow still an open problem in automatic parallelization. This paper presents a novel data-ow analysis for imperative recursive programs. The data-ow sources are represented by closed forms expressions, parametrized with an index on the current node in the ...
متن کاملAutomating Regression Verification of Pointer Programs by Predicate Abstraction
Regression verification is an approach complementing regression testing with formal verification. The goal is to formally prove that two versions of a program behave either equally or differently in a precisely specified way. In this paper, we present a novel automatic approach for regression verification that reduces the equivalence of two related imperative pointer programs to constrained Hor...
متن کاملFully Automatic Verification of Absence of Errors via Interprocedural Integer Analysis
We present a interprocedural C String Static Verifier (iCSSV), a whole program analysis algorithm for verifying the safety of string operations in C programs. The algorithm automatically proves linear relationships among pointer expressions. The algorithm is conservative, i.e., it infers only valid relationships although it may fail to detect some of them. The algorithm is targeted to programs ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2009